home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1997-10-26 | 10.3 KB | 297 lines |
- DEFINITION MODULE Messages;
-
- FROM SYSTEM IMPORT ADDRESS;
-
- IMPORT data, CatTypes;
-
- (* Erst mal ein paar Strings *)
-
- TYPE distTextArray = ARRAY [data.dNone..data.dNet] OF ARRAY [0..10] OF CHAR;
-
- CONST
- msgDistr = 'Distr.: '+0C;
- msgDNone = 'keine'+0C;
- msgDLokal = '(lokal)'+0C;
- msgDMausNet = '(MausNet)'+0C;
- msgDNet = '(Net)'+0C;
- msgDistribs = distTextArray{msgDNone, msgDLokal, msgDMausNet, msgDNet};
-
- TYPE
- msgNumberSet = SET OF [0..999];
-
- MessageType = (comment, answer, mail, private, groupcomment, copyOwn, copyOther, forward, persanswer);
- lineType = (dateL, receiverL, orgGroupL, groupL, refIdL, topicL, rIdL, rNameL);
-
- shortInfo = RECORD
- msgType : MessageType;
- number : INTEGER;
- copyCount : INTEGER;
- refNum : INTEGER;
- sendMsg : BOOLEAN;
- toDelete : BOOLEAN;
- dist : data.tDistribution;
- size : LONGCARD;
- noRefLine : BOOLEAN;
- cDate : CARDINAL;
- cTime : CARDINAL;
- orgDist : data.tDistribution;
- reserved1,
- reserved2 : LONGCARD;
- END;
-
- msgInfo = RECORD
- CASE : INTEGER OF
- 1 : info : shortInfo;|
- 2 : msgType : MessageType;
- number : INTEGER;
- copyCount : INTEGER;
- refNum : INTEGER;
- sendMsg : BOOLEAN;
- toDelete : BOOLEAN;
- dist : data.tDistribution;
- size : LONGCARD;
- noRefLine : BOOLEAN;
- cDate : CARDINAL;
- cTime : CARDINAL;
- orgDist : data.tDistribution;
- reserved1,
- reserved2 : LONGCARD; |
- END;
- new : BOOLEAN;
- hdrRead : BOOLEAN;
- isSend : BOOLEAN;
- selected: BOOLEAN;
- CASE : CARDINAL OF
- 0 : strings : ARRAY [dateL..rNameL] OF CatTypes.Str1023Ptr; |
- 1 : date : CatTypes.Str1023Ptr;
- receiver : CatTypes.Str1023Ptr;
- orgGroup : CatTypes.Str1023Ptr;
- group : CatTypes.Str1023Ptr;
- refId : CatTypes.Str1023Ptr;
- topic : CatTypes.Str1023Ptr;
- rId : CatTypes.Str1023Ptr;
- realName : CatTypes.Str1023Ptr;
- END;
- END;
-
- msgInfoPtr = POINTER TO msgInfo;
-
- msgArrayPtr = POINTER TO ARRAY [0..999] OF msgInfo;
- diskArrayPtr = POINTER TO ARRAY [0..999] OF shortInfo;
-
-
- VAR msgArray : msgArrayPtr;
- messages : INTEGER;
- maxMess : INTEGER;
- usedNumbers: msgNumberSet;
-
- PROCEDURE Number2Name (number : CARDINAL; VAR str : ARRAY OF CHAR);
- (* Wandelt eine Msgnummer in einen Nachrichtendateinamen um
- *)
-
- PROCEDURE FileSize (REF path, name : ARRAY OF CHAR; VAR date, time: CARDINAL) : LONGCARD;
- (* Holt die Dateigre und Erstellungsdatum und -uhrzeit einer Datei
- *)
-
- PROCEDURE FindMessage (number : INTEGER): INTEGER;
- (* Liefert den internen Index der Nachricht mit der Nummer number
- *)
-
- PROCEDURE NewMessage(REF Gruppe, Wegen : ARRAY OF CHAR);
- (* Eine neue Message anlegen und danach editieren *)
-
- PROCEDURE NewKomMessage(REF fromGroup, Group, Wegen, RefId, txt, mId, To, RealName: ARRAY OF CHAR);
- (* Einen Kommentar zu einer Gruppennachricht in
- * eine andere Gruppe schicken.
- *)
-
- PROCEDURE NewAnsMessage(REF an, realName, fromGroup, Wegen, RefId, txt, mId : ARRAY OF CHAR);
- (* Einen Kommentar zu einer Gruppennachricht an jemand
- * persnlich schicken.
- *)
-
- PROCEDURE NewRegMsg(VAR number: INTEGER; VAR txtName : ARRAY OF CHAR);
- (* Eine Registrierungsnachricht wird erzeugt
- * Der Name der Textdatei wird zurckgegeben
- *)
-
- PROCEDURE UpdateFileSize (number: INTEGER);
- (* Erzwingt ein Update der Nachrichtengre der Nachricht mit
- * der Nummer number
- * Wird nach NewRegMsg bentigt.
- *)
-
- PROCEDURE NewPersMsg (REF Empfaenger, RealName, Wegen : ARRAY OF CHAR);
- (* Eine neue persnliche Nachricht an jemand schicken
- *)
-
- PROCEDURE NewKom(REF Nr, Wegen, gruppe, mId, To, RealName : ARRAY OF CHAR;
- oldDist: data.tDistribution);
- (* Einen Kommentar erzeugen
- *)
-
- PROCEDURE NewAnswer(REF Nr, Wegen, an, mId, RealName : ARRAY OF CHAR);
- (* Eine Antwort erzeugen
- *)
-
- PROCEDURE SendState(REF Nr : ARRAY OF CHAR; NewState : CHAR);
- (* Erstellt eine Statusnachricht fr die persnlichen Nachrichten,
- * die man empfangen hat
- *)
-
- PROCEDURE CopyOrForwardMessage (REF Nr, To, RealName, comment : ARRAY OF CHAR; copy : BOOLEAN);
- (* Erstellt eine Statusmeldung fr eine Kopie oder eine
- * Weiterleitung
- *)
-
- PROCEDURE CopyOwnMessage (REF MailId, To, RealName, Comment : ARRAY OF CHAR; minNum: INTEGER);
- (* Erstellt eine Kopie einer eigenen Nachricht
- *)
-
- PROCEDURE IsPrivateMessage (VAR internalId : ARRAY OF CHAR): BOOLEAN;
- (* Gibt zurck, ob die Message eine private oder eine
- * ffentliche Nachricht ist. Der Parser mu das beim Abarbeiten
- * des Logfiles wissen, um evtl. private Nachrichten noch
- * einfgen zu knnen.
- *)
-
- PROCEDURE MsgHasCopys (REF internalId: ARRAY OF CHAR): BOOLEAN;
- (* Gibt zurck, ob die Nachricht Kopien hat oder nicht.
- * Wenn es keine private Nachricht ist, dann wird immer FALSE
- * zurckgegeben
- *)
-
- PROCEDURE ChangeMessage (REF internalId : ARRAY OF CHAR): BOOLEAN;
- (* Wenn die Nachricht ein Kommentar oder eine Antwort ist,
- * dann wird daraus eine entsprechende Nachricht mit Wildwestverkettung
- * erzeugt, damit die Maus die beim nchsten Mal annimmt.
- *)
-
- PROCEDURE GetHdrInfos (REF internalId : ARRAY OF CHAR;
- VAR refIdPtr, ToPtr, WegenPtr, ElinePtr,
- longRefIdPtr : ADDRESS);
- (* Gibt an den Parser die ntigen Informationen zurck,
- * um eine persnliche Nachricht einzufgen
- *)
-
- PROCEDURE GetMsgFileName (VAR name : ARRAY OF CHAR);
- (* Gibt an den Parser den Dateinamen zurck,
- * unter dem die Nachricht gespeichert wurde,
- * ohne Extension
- *)
-
- PROCEDURE DeleteMessage (REF internalId : ARRAY OF CHAR);
- (* Lscht eine Nachricht wieder.
- *)
-
- PROCEDURE InitMessages();
- (* Initialisiert die internen Strukturen des MessageManagers
- *)
-
- PROCEDURE SortMessages();
- (* Sortiert die Nachrichten intern richtig
- *)
-
- PROCEDURE WriteHdrInfo (VAR msg : msgInfo);
- (* Schreibt die Headerinformationen der Nachricht in die .HDR-Datei
- *)
-
- PROCEDURE ReadHdrInfo (VAR msg : msgInfo; externalRef: BOOLEAN);
- (* Liest die Headerinformationen aus der MSGxxx.HDR-Datei ein
- * ExternalRef: msg ist keine Referenz auf dem msgArray.
- *)
-
- PROCEDURE ReadMessageInfo();
- (* Liest die MSGINFO.DAT ein
- *)
-
- PROCEDURE ReReadMessageInfo();
- (* Liest die MSGINFO.DAT erneut ein
- *)
-
- PROCEDURE WriteMessageInfo(doRedrawWdw: BOOLEAN);
- (* Schreibt die MSGINFO.DAT ein
- *)
-
- PROCEDURE MakeMausId (msg: msgInfo; VAR str : ARRAY OF CHAR);
- (* Erzeugt eine ID, wie sie an die Maus geschickt wird.
- * Format:
- * CM###ddddd, ### ist die interne Messagenummer,
- * ddddd ist das Datum und die Zeit im 36er System
- *)
-
- PROCEDURE CreateMessage (minNum : INTEGER; REF To, OrgGroup, Group, RefId, Topic, RealName : ARRAY OF CHAR;
- type : MessageType; copyTo : CARDINAL;
- REF crossLine : ARRAY OF CHAR;
- REF oldMId : ARRAY OF CHAR;
- oldDist : data.tDistribution;
- openEditor : BOOLEAN;
- VAR messIdx: INTEGER): BOOLEAN;
- (* Erzeugt eine neue Nachricht, Oberfunktion fr alle neuen Nachrichten
- * Sollte nicht benutzt werden, nur fr interne Benutzung
- *)
-
- PROCEDURE deleteMessage (REF internalId : ARRAY OF CHAR; killEdit: BOOLEAN;
- changeState : BOOLEAN);
- (* Lscht eine Nachricht, schliet ggf. die Editoren und ggf. Status von
- * persnlicher Nachricht zurckstellen
- *)
-
- PROCEDURE DeleteMessage (REF internalId : ARRAY OF CHAR);
- (* Nachricht mit dieser internen Id lschen. Ruft selber deleteMessage auf
- *)
-
- TYPE msgInfoType = (itReceiver, itOrgGroup, itGroup, itRid, itTopic, itMid, itRName);
-
- PROCEDURE MsgEditGetInfos (wdw: INTEGER; info: msgInfoType; VAR str: ARRAY OF CHAR);
- (* Gibt die gewnschten Infos zu dem Message-Editor wdw. Wenn die Information
- * nicht vorhanden ist, dann wird ein leerer String geliefert
- *)
-
- PROCEDURE MsgEditorTop (wdw: INTEGER): BOOLEAN;
- (* Liefert zurck, ob gerade ein Message-Editor das Topwindow ist,
- * also ein Editor, der diesem Modul bekannt ist
- *)
-
- (*$H+*)
- PROCEDURE openReference (idx: INTEGER);
- (* ffnet die Referenznachricht
- *)
- (*$H=*)
-
- PROCEDURE OpenEditor (VAR msg : msgInfo; new: BOOLEAN; num : INTEGER;
- offset: INTEGER; forView: BOOLEAN);
- (* ffnet einen CAT-Editor mit einer Nachricht drin
- *)
-
- PROCEDURE UpdateEditors (msg: msgInfo);
- (* Aktualisiert die mit der Nachricht verbundenen Infozeilen der Editoren
- *)
-
- PROCEDURE SaveEditPos (VAR max: INTEGER);
- (* Sichert die Positionen der Editoren
- * Gibt die Anzahl der gesicherten Positionen zurck
- *)
-
- PROCEDURE CloseAllEditors (force: BOOLEAN): BOOLEAN;
- (* Schliet alle Nachrichteneditoren
- *)
-
- PROCEDURE MsgAskForSave();
- (* Fragt fr alle offenen Editorfenster mit Nachrichten und
- * vernderten Texten nach, ob diese noch gesichert werden sollen.
- * Sollte vor dem Erstellen des Infiles aufgerufen werden.
- *)
-
- PROCEDURE ReloadEditors ();
- (* Aktualisiert nach dem Erstellen des Infiles alle
- * offenen Editorfenster
- *)
-
- PROCEDURE InitMessages ();
- (* Modul initialisieren. Kann auch wiederholt aufgerugen werden,
- * dann werden die Strukturen neu initialisiert
- *)
-
- END Messages.
-